package com.powernode.config;

import com.powernode.constant.RedisConstant;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.codec.JsonJacksonCodec;
import org.redisson.config.Config;
import org.redisson.spring.cache.CacheConfig;
import org.redisson.spring.cache.RedissonSpringCacheManager;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;
// Redisson是基于redis的数据网格，实现类许多分布式服务，比如分布式锁
//@Configuration
//// 启用SpringCache缓存
//@EnableCaching
//public class RedissonConfig {
//
//    @Bean(destroyMethod = "shutdown")
//    RedissonClient redisson() {
//        Config config = new Config();
//        // 设置使用Jackson序列化缓存的数据
//        config.setCodec(new JsonJacksonCodec());
//        config.useSingleServer().setAddress("redis://192.168.100.41:6379").setPassword("123456");
//        return Redisson.create(config);
//    }
//
//    // 使用 RedissonSpringCacheManager 缓存管理器覆盖默认缓存管理器 RedisCacheManager
//    @Bean
//    CacheManager cacheManager(RedissonClient redissonClient) {
//        Map<String, CacheConfig> config = new HashMap<>();
//        /**
//         为商品的缓存设置过期时间
//         设置名称为"RedisConstant.PRODUCT_KEY"的缓存，过期时间为30分钟，最长空闲时间15分钟。
//         @CacheConfig(cacheNames = RedisConstant.PRODUCT_KEY)
//         */
//        config.put(RedisConstant.KEY_PRODUCT, new CacheConfig(30 * 60 * 1000, 15 * 60 * 1000));
//
//        RedissonSpringCacheManager cacheManager = new RedissonSpringCacheManager(redissonClient, config);
//        // 允许缓存空值（默认允许）
//        // cacheManager.setAllowNullValues(true);
//        return cacheManager;
//    }
//}
